#ifndef MSGADD_H
#define MSGADD_H

#include <QWidget>
#include <QHBoxLayout>
#include <QVBoxLayout>
#include <QScrollArea>
#include <QResizeEvent>
#include <QDebug>
#include <QLabel>
#include <QPushButton>
#include <QMessageBox>
#include <QMouseEvent>
#define qcout qDebug()<<"---------["<<__FILE__ <<":"<< __LINE__<<"]-->"

#include "protocol.h"


class MyPushButtonName
{

public:
    void setBtn(QPushButton* btn_)
    {
        btn = btn_;
    }
    void setName(QString btnName_)
    {
        btnName = btnName_;
    }

    QPushButton* &getPushButton()
    {
        return btn;
    }

    QString& getBtnName()
    {
        return btnName;
    }


private:
    QPushButton* btn;
    QString btnName;

};

class MsgAdd : public QWidget
{
    Q_OBJECT
public:
    explicit MsgAdd(QWidget *parent = nullptr);

    //单例
    static MsgAdd& getInstance();

    //添加消息控件
    void addMsgWidget(const PDU *pdu);

    //添加好友同意的控件
    void addMsgWidget_Agree(const PDU *pdu);
    //添加好友拒绝的控件
    void addMsgWidget_Refuse(const PDU *pdu);



public slots:

    //按钮点击触发弹出窗口
//    void signal_sendToButton(QString btName);

protected:
    void mousePressEvent(QMouseEvent *event) override {
        QWidget::mousePressEvent(event);
        emit clicked(); // 自定义信号
    }
signals:
    void clicked(); // 定义信号

    //给TcpClient发送信号, 把同意添加好友的消息发送给服务器, 服务器在转发给fName
//    void signals_sendToServerPBAddFriend( const PDU * pdu, int reply);
    void signals_sendToServerPBAddFriend( QString fName, int reply);

    //AddFriendAgreePB向OpeWidget发送信号, 用于在OpeWidget::TextEdit上显示log输出
    void signal_m_pAddFriendAgree_clicked(QString sName);
signals:




private:
    QScrollArea *m_scrollArea;//创建滚动区
    QVBoxLayout *m_pScrollLayout;//水平布局

    QVBoxLayout *m_pMainLayout;//水平布局

    QList<MyPushButtonName*> m_pLwidget;//epicbattlesawait5

    QWidget *contentWidget;
    QVBoxLayout *layout;

};

#endif // MSGADD_H
